package com.smart.milvus.base;

import io.milvus.grpc.DataType;
import org.springframework.lang.Nullable;

import java.lang.reflect.Field;

public interface TypeHandler {

    /**
     * 替换参数
     *
     * @param param       参数
     * @param field       田
     * @param columnName  列名称
     * @param dataType    数据类型
     * @param elementType 元素类型
     * @return {@link Object }
     */
    Object replaceParam(Object param, Field field, String columnName, DataType dataType, DataType elementType);


    /**
     * 获取结果
     *
     * @param param       参数
     * @param field       田
     * @param columnName  列名称
     * @param dataType    数据类型
     * @param elementType 元素类型
     * @return {@link Object }
     */
    @Nullable
    Object getResult(Object param, Field field, String columnName, DataType dataType, DataType elementType);

}
